package com.cleaningcloud.cld.service;

import com.cleaningcloud.cld.domain.FinanceReportBI;
import com.cleaningcloud.cld.domain.vo.CldBiDataVo;

import java.util.List;
import java.util.Map;

/**
 * @className 营运报表BI业务接口类
 * @description //TODO
 * @author Shaw
 * @date: 2025-03-06 16:33
 * @param: //TODO
 */
public interface IFinanceReportBIService {

    //  ====================================合同金额版块====================================
    /**
     * @Author Shaw
     * @Description 合同金额
     * @date: 2025-04-09 12:04
     * @param: //TODO
     */
    List<FinanceReportBI> getFinanceReportBIContractMoney(FinanceReportBI financeReportBI);

    //  ====================================合同金额下钻====================================
    /**
     * @Author Shaw
     * @Description 按区域查询合同金额占比
     * @date: 2025-03-06 16:33
     * @param: //TODO
     */
    List<FinanceReportBI> getFinanceReportBIContractMoneyByRegionRate(FinanceReportBI financeReportBI);

    /**
     * @Author Shaw
     * @Description 合同金额列表
     * @date: 2025-04-22 16:28
     * @param: //TODO
     */
    List<FinanceReportBI> getFinanceReportBIProjectContractMoneyList(FinanceReportBI financeReportBI);

    //  ====================================工资版块====================================
    /**
     * @Author Shaw
     * @Description 工资版块
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    Map<String, Object> getFinanceReportBISalarySection(FinanceReportBI financeReportBI);

    //  ====================================工资版块下钻====================================
    /**
     * @Author Shaw
     * @Description 按当月查询实际工资(日走势图)
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    public List<CldBiDataVo> getFinanceReportBIDownByMonthSalary(FinanceReportBI financeReportBI);

    /**
     * @Author Shaw
     * @Description 按当月查询实际工资(日期列表)
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    public FinanceReportBI getFinanceReportBIDownByMonthSalaryList();

    /**
     * @Author Shaw
     * @Description 按区域实际工资占比
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    public List<FinanceReportBI> getFinanceReportBIDownByMonthSalaryRate(FinanceReportBI financeReportBI);

    //  ====================================物资+资产版块====================================
    /**
     * @Author Shaw
     * @Description 物资+资产版块
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    Map<String, Object> getFinanceReportBIMaterialSection(FinanceReportBI financeReportBI);

    //  ====================================税费+抵扣版块====================================
    /**
     * @Author Shaw
     * @Description 税费+抵扣版块
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    Map<String, Object> getFinanceReportBITaxSection(FinanceReportBI financeReportBI);

    //  ====================================其他费用版块====================================
    /**
     * @Author Shaw
     * @Description 其他费用版块
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    Map<String, Object> getFinanceReportBIExpenditureSection(FinanceReportBI financeReportBI);

    //  ====================================利润版块====================================
    /**
     * @Author Shaw
     * @Description 按当月查询日利润(日走势图)
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    List<CldBiDataVo> getFinanceReportBIDataByProfit(FinanceReportBI financeReportBI);

    /**
     * @Author Shaw
     * @Description 利润版块
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    Map<String, Object> getFinanceReportBIProfitSection(FinanceReportBI financeReportBI);

    //  ====================================按公司查询账户信息====================================
    /**
     * @Author Shaw
     * @Description 按公司查询账户信息
     * @date: 2025-04-22 16:28
     * @param: //TODO
     */
    List<FinanceReportBI> getFinanceReportBIAccountInfoList(FinanceReportBI financeReportBI);

    //  ====================================应收+实收版块====================================
    /**
     * @Author Shaw
     * @Description 应收+实收版块
     * @date: 2025-04-22 16:28
     * @param: //TODO
     */
    FinanceReportBI getFinanceReportBIReceivableAndReceipts(FinanceReportBI financeReportBI);

}
